package com.airlines.crewassignment.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.airlines.crewassignment.domain.Crew;
import com.airlines.crewassignment.domain.CrewFlightExperience;
import com.airlines.crewassignment.domain.DateTimeRange;
import com.airlines.crewassignment.domain.Skill;
import com.airlines.crewassignment.domain.Tech;


/**
 * @author xxxx
 * @date 2018年3月26日 
 * @description
 */
public interface CrewMapper {
	/**
	 * 从3017中查询所有机组的基本信息,参数可为 null
	 * @param  dutyCode  F飞行员 C乘务员 A安全员
	 * @param workcode
	 * @return
	 */
	List<Crew> listCrewBase(@Param("dutyCode")String dutyCode,@Param("workcode")String workcode);
	List<Crew> listCrewBase(Crew crew);

	/**
	 * 从3017中查询所有机组还有tbl_user 中查询签派和机务人员信息
	 * key    如果为空，则查询为空, 姓名和拼音模糊查询
	 * @param parameters
	 *  key    如果为空，则查询为空, 姓名和拼音模糊查询
	 * moduleFlag  人员类型
	 * @return
	 */
	List<Crew> listStaff(Map<String,String> parameters);
	List<Crew> listStaffPcode(Map<String,String> parameters);

	/**
	 * 根据workcode从3017中查询所有机组还有tbl_user 中查询签派和机务人员信息
	 * @param workcode
	 * @return
	 */
	List<Crew>  staffInfo(@Param("workcode") String  workcode);
	
	/**
	 * 查询所有机组的授权
	 * @param tech
	 * @return
	 */
	List<Tech> listCrewTech(Tech tech);
	
	/**
	 * 查询机组人员的技术等级信息，参数可为 null
	 * @param  dutyCode  F飞行员 C乘务员 A安全员
	 * @param workcode
	 * @return
	 */
	List<Skill> listCrewSkill(@Param("dutyCode")String dutyCode,@Param("workcode")String workcode);
	
	/**
	 * 按照实际的执行任务，查询最后一次任务所在的机场位置。
	 * 由于这个是实际的历史任务，考虑到备降返航等问题，则需要按照T2001算
	 * @param workcode 非必填
	 * @param dutyCode 非必填
	 * @param dateTimeRange 必填！
	 * @return
	 */
	List<CrewFlightExperience> listCrewLastAirport(@Param("dutyCode")String dutyCode,@Param("workcode")String workcode,@Param("dateTimeRange") DateTimeRange dateTimeRange);

	Crew getCrewByWorkcode(String workcode);

	/**
	 * 获取所有机组人员信息
	 * @param crew
	 * @return
	 */
	List<Crew> getCrewList(Crew crew);

	/**
	 * 通过工号改变是否管理员
	 * @param crew
	 * @return
	 */
	Integer updateManagerByWorkcode(Crew crew);
}
